<?php
// 数据库初始化脚本
require_once 'db_config.php';

// 读取 SQL 文件内容
function read_sql_file($file_path) {
    if (!file_exists($file_path)) {
        return false;
    }
    return file_get_contents($file_path);
}

// 执行 SQL 脚本
function execute_sql_script($pdo, $sql_script) {
    try {
        // 开始事务
        $pdo->beginTransaction();

        // 分割 SQL 语句
        $sql_statements = preg_split('/;/', $sql_script);

        // 执行每个 SQL 语句
        foreach ($sql_statements as $statement) {
            $statement = trim($statement);
            if (!empty($statement)) {
                $pdo->exec($statement);
            }
        }

        // 提交事务
        $pdo->commit();
        return true;
    } catch(PDOException $e) {
        // 回滚事务
        $pdo->rollBack();
        return '执行 SQL 脚本失败: ' . $e->getMessage();
    }
}

// 执行初始化
function initialize_database() {
    try {
        // 连接数据库
        require_once 'db_config.php';
        try {
            $pdo = new PDO("mysql:host={$db_config['host']};dbname={$db_config['dbname']};port={$db_config['port']}", $db_config['username'], $db_config['password']);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            throw $e;
        }
        echo "数据库连接成功！<br>";

        // 读取 SQL 脚本
        $sql_script = read_sql_file('init_db.sql');
        if ($sql_script === false) {
            echo "无法读取 init_db.sql 文件！<br>";
            return;
        }

        // 执行 SQL 脚本
        $result = execute_sql_script($pdo, $sql_script);
        if ($result === true) {
            echo "数据库初始化成功！<br>";
        } else {
            echo $result . "<br>";
        }
    } catch(PDOException $e) {
        echo "数据库连接失败: " . $e->getMessage() . "<br>";
    }
}

// 运行初始化
initialize_database();

// 显示数据库配置信息
echo "<br>使用的数据库配置:<br>";
echo "主机: " . $db_config['host'] . "<br>";
echo "数据库名: " . $db_config['dbname'] . "<br>";
echo "用户名: " . $db_config['username'] . "<br>";
echo "端口: " . $db_config['port'] . "<br>";
?>"}}}